iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
自我挑戰組

從零開始的後端異世界生活系列 第 13

Day 13 - 懶得寫文件拉~來使用 NestJS 的 Swagger UI 幫你寫(下)

  • 分享至 

  • xImage
  •  

花東出遊 ing.. 篇幅酌量減少 XD

強化 API 參數文件敘述

接著我們來幫 API 參數加上文件敘述,首先先來創造個假參數範例,假設我們的任務管理系統,新增任務時需要兩樣東西:「任務名稱、完成與否」,在此我們先新增一個 tasks-info-dto.ts ,並在裡面新增兩個參數:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619PUJNrPtzio.png

好了之後我們把參數放進 Post 那支 API 當中:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619GSBH5ZhJNm.png

打開 Swagger 後會發現該支 API 的參數還是沒有正確顯示:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619UgqCCvwqHB.png

我們回到 DTO,幫參數加上 ApiProperty 的裝飾器:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619Nr4LIUBtIo.png

重整之後,看來 Swagger 有正確顯示參數了呢:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619G7LWFmXMud.png

但還少了一點,我們幫這個參數加上一點敘述吧:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619KMguumiAL3.png

這樣點開 Schema 看後又更清楚了一些呢:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619mQywVjI3KA.png

參數可選型別

有些參數是屬於 Optional 的(可寫可不寫),這時也必須在文件上註記,別人才會知道,在 Swagger 文件上註記可選型別有兩種方式,簡單做個範例。

  • required: false
    https://ithelp.ithome.com.tw/upload/images/20200928/20119619ESHJ1dALou.png

https://ithelp.ithome.com.tw/upload/images/20200928/20119619JfLEr40R7v.png

  • ApiPropertyOptional 裝飾器
    https://ithelp.ithome.com.tw/upload/images/20200928/20119619oXv4eXoCvn.png

https://ithelp.ithome.com.tw/upload/images/20200928/20119619JfLEr40R7v.png

增加範例參數

有時候有些比較複雜的 API,若是後端能先寫好參數的範例,前端也能比較省事,拿到就可以直接打打看,那我們在這邊幫參數加上個範例吧:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619cS9vxC1fFX.png

重整之後,Swagger 上直接就是顯示範例參數了:
https://ithelp.ithome.com.tw/upload/images/20200928/20119619fZ2du35tZg.png

若我們直接點選 Try it out ,還會幫我們自動把範例參數帶進去:
https://ithelp.ithome.com.tw/upload/images/20200928/201196198UqOcfvj4i.png

這樣我們 Swagger UI 篇章就暫時告一段落,之後陸續在 30 天內有遇到會再講解更深入的內容。

/*
本系列文係個人新手開發心得,可能會有許多錯誤,煩請多多包容不吝指教。
*/


上一篇
Day 12 - 懶得寫文件拉~來使用 NestJS 的 Swagger UI 幫你寫(中)
下一篇
Day 14 - 來建我們人生中的第一顆 DB 吧,使用 PostgreSQL
系列文
從零開始的後端異世界生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言